package com.station.search.domain.vo;

import com.station.search.constant.DeleteEnum;
import com.station.search.domain.pojo.BaseField;
import com.station.search.plugin.inlist.InList;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;

/**
 * @author: JT
 * @date: 2021/8/31
 * @Title:  台站信息表
 */
@Setter
@Getter
@ToString
@ApiModel(value="台站基本信息传输对象")
public class StationInfoVO {

    /** 台站编号 */
    @ApiModelProperty(value = "台站号", required = true, position = 1)
    @NotBlank(message = "台站号不能为空")
    private String stationCode ;

    /** 台站名称 */
    @ApiModelProperty(value = "台站名称", required = true, position = 2)
    @NotBlank(message = "台站名称不能为空")
    private String stationName ;

    /** 台站类型 */
    @ApiModelProperty(value = "台站类型", required = true, position = 3)
    @NotBlank(message = "台站类型不能为空")
    private String stationType ;

    /** 台站级别 */
    @NotBlank(message = "台站级别不能为空")
    private String stationLevel ;

    /** 台站位置 */
    @NotBlank(message = "台站位置不能为空")
    private String location ;

    /** 海拔 */
    @NotNull(message = "台站海拔不能为空")
    private Double altitude ;

    /** 站点离地面高度 */
    @NotNull(message = "台站站点离地面高度不能为空")
    private Double heightAboveGround ;

    /** 气压高度 */
    @NotNull(message = "台站气压高度不能为空")
    private Double pressAltitude ;

    /** 品牌 */
    private String trademark ;

    /** 型号 */
    private String model ;


    /** 经度_单位 */
    @InList(required = true, list = {"E", "W"})
    private String lonUnit;

    /** 经度_度 */
    @NotNull(message = "经度[度]不能为空")
    @Range(min = 0, max = 180, message = "经度[度]超出限制[0, 180]")
    private Double lonDegrees ;

    /** 经度_分 */
    @NotNull(message = "经度[分]不能为空")
    @Range(min = 0, max = 60, message = "经度[分]超出限制[0, 60]")
    private Double lonMinute ;

    /** 经度_秒 */
    @NotNull(message = "经度[秒]不能为空")
    @Range(min = 0, max = 60, message = "经度[秒]超出限制[0, 60]")
    private Double lonSecond ;

    /** 纬度_单位 */
    @InList(required = true, list = {"N", "S"})
    private String latUnit;

    /** 纬度_度 */
    @NotNull(message = "纬度[度]不能为空")
    @Range(min = 0, max = 90, message = "纬度[度]超出限制[0, 90]")
    private Double latDegrees ;

    /** 纬度_分 */
    @NotNull(message = "纬度[分]不能为空")
    @Range(min = 0, max = 60, message = "纬度[分]超出限制[0, 60]")
    private Double latMinute ;

    /** 纬度_秒 */
    @NotNull(message = "纬度[秒]不能为空")
    @Range(min = 0, max = 60, message = "纬度[秒]超出限制[0, 60]")
    private Double latSecond ;

    /** 区域 */
    @NotBlank(message = "台站所属区域不能为空")
    private String area ;

    /** 街道办 */
    private String streetOffice ;
    /** 站点联系人 */
    private String stationContact ;
    /** 站点联系人电话 */
    private String stationContactNumber ;
    /** 巡检周期 */
    private Integer checkCycle ;
    /** 抢修时间 */
    private Integer repairDate ;
    /** 主管人员 */
    private List<BaseField> manager ;
    /** 维护公司 */
    private String checkCompany ;
    /** 维护人员 */
    private List<BaseField> checkPeople ;
    /** 是否已删除 */
    private char isDeleted = DeleteEnum.NOT_DELETED.getValue();
    /** 删除时间 */
    private Date deletedDate ;
}
